#include <iostream>
#include <string>
#include <typeinfo>
#include <cmath>
#include <vector>
#include <unordered_map>
using namespace std;

class A {
    public:
        void print() { hook(); }
    
    protected:
        virtual void hook() = 0;
};

class B : public A {
    private:
        void hook() { cout << "B::hook();" << endl; }
};

//int main(){
//    A * a = new B();
//    a -> print();
//    return 0;
//}

